home *** CD-ROM | disk | FTP | other *** search
/ Amiga Tools 5 / Amiga Tools 5.iso / grafik / 3d & render tools / irit / contrib / scripts / dino.irt < prev    next >
Encoding:
Text File  |  1996-07-16  |  7.6 KB  |  287 lines

  1. #
  2. # Dimerman Dan abd Zohar Bengad
  3. #
  4.  
  5.  skull = sphere(vector(0,0,0),1) * scale(vector(1.0,0.65,0.8));
  6.  color(skull, blue);
  7.  
  8.  cheeks = sphere(vector(0.4,0.2,-0.1),0.5) + sphere(vector(-0.4,0.2,-0.1),0.5);
  9.  color(cheeks, yellow);
  10.  
  11.  eyes = sphere(vector(0.3,0.45,0.25),0.2) + sphere(vector(-0.3,0.45,0.25),0.2);
  12.  color(eyes, white);
  13.  
  14.  pupils = sphere(vector(0.3,0.6,0.25),0.1) + sphere(vector(-0.3,0.6,0.25),0.1);
  15.  color(pupils, black);
  16.  
  17.  mouth_cross = cbspline ( 3, 
  18.     list(    ctlpt(E2,-0.024, 0.488),
  19.         ctlpt(E2,0.164, 0.48),
  20.         ctlpt(E2,0.28, 0.344),
  21.         ctlpt(E2,0.328, 0.22),
  22.         ctlpt(E2,0.372, -0.036), 
  23.         ctlpt(E2,0.252, -0.064), 
  24.         ctlpt(E2,0.36, -0.112), 
  25.         ctlpt(E2,0.252, -0.236), 
  26.         ctlpt(E2,0.136, -0.256), 
  27.         ctlpt(E2,-0.044, -0.216), 
  28.         ctlpt(E2,-0.216, -0.26),
  29.         ctlpt(E2,-0.304, -0.24), 
  30.         ctlpt(E2,-0.412, -0.116), 
  31.         ctlpt(E2,-0.316, -0.072), 
  32.         ctlpt(E2,-0.412, -0.032), 
  33.         ctlpt(E2,-0.396, 0.188), 
  34.         ctlpt(E2,-0.356, 0.32), 
  35.         ctlpt(E2,-0.244, 0.452), 
  36.         ctlpt(E2,-0.024, 0.5), 
  37.         ctlpt(E2,-0.024, 0.5), 
  38.         ctlpt(E2,0.168, 0.472),
  39.         ctlpt(E2,0.268, 0.336)),
  40.          list( KV_OPEN ) );
  41.  
  42.  mouth_scale = cbezier( list (
  43.                 ctlpt(E2, -0.584000, 0.652000),
  44.                 ctlpt(E2, -0.216000, 0.648000),
  45.                 ctlpt(E2, 0.112000, 0.504000),
  46.                 ctlpt(E2, -0.060000, -0.568000),
  47.                 ctlpt(E2, 0.644000, 3.040000),
  48.                 ctlpt(E2, 0.856000, 0.0)));
  49.  
  50.  mouth_axis = cbezier( list (ctlpt( E2, 0, 0),
  51.                  ctlpt( E2, .2,0),
  52.                  ctlpt( E2, .3,0),
  53.                  ctlpt( E2, .4,0),
  54.                  ctlpt( E2, .5,0),
  55.                  ctlpt( E2, .6, 0)));
  56.  
  57.  mouth = SWPSCLSRF( mouth_cross , mouth_axis, mouth_scale , off, 0);
  58.  
  59.     free(mouth_cross);
  60.     free(mouth_axis);
  61.     free(mouth_scale);
  62.  
  63.  head = list (skull , cheeks , eyes , pupils ,
  64.     (mouth*scale(vector(1.9,1.9,1.9))*rotx(180)*rotz(90)*trans(vector(0.0,0.4,-0.3))));
  65.  
  66.     free(skull);
  67.     free(cheeks);
  68.     free(mouth);
  69.     free(eyes);
  70.     free(pupils);
  71.  
  72.     body_Cross = cbspline( 3,
  73.             list(   ctlpt( E2,-0.548, 0.016), 
  74.                 ctlpt( E2,-0.48, 0.336), 
  75.                 ctlpt( E2,-0.008, 0.928), 
  76.                 ctlpt( E2,0.496, 0.312), 
  77.                 ctlpt( E2,0.56, 0.032), 
  78.                 ctlpt( E2,0.448, -0.128), 
  79.                 ctlpt( E2,-0.436, -0.148), 
  80.                 ctlpt( E2,-0.548, 0.008), 
  81.                 ctlpt( E2,-0.548, 0.016),
  82.                 ctlpt( E2,-0.48, 0.336), 
  83.                 ctlpt( E2,-0.008, 0.878)) 
  84.             ,list( KV_PERIODIC ) ); 
  85.  
  86.     body_scaleCrv = cbspline( 3,
  87.                          list ( ctlpt( E2,  -0.904,  0.1),
  88.                 ctlpt( E2, -0.86, 0.15),
  89.                 ctlpt( E2, -0.492, 0.2),
  90.                 ctlpt( E2, -0.416, 0.3), 
  91.                 ctlpt( E2, -0.236, 0.4), 
  92.                 ctlpt( E2, 0.064, 0.5),
  93.                 ctlpt( E2, 0.368, 1.5),
  94.                 ctlpt( E2, 0.672, 1.3),
  95.                 ctlpt( E2, 0.708, 0.2),
  96.                 ctlpt( E2, 0.84, 0.2),
  97.                 ctlpt( E2, 0.9, 0.2),
  98.                 ctlpt( E2, 1.224, 0.2),
  99.                 ctlpt( E2, 1.5,  0.2),
  100.                 ctlpt( E2, 1.648, 0.2),
  101.                 ctlpt( E2, 1.708, 0.1),
  102.                 ctlpt( E2, 1.748, 0.0)),
  103.  
  104.                          list( KV_OPEN ) );
  105.  
  106.     body_Axis = cbezier ( list ( ctlpt(E2, -0.668000, 0.648000),
  107.                 ctlpt(E2, -0.668000, 0.476000),
  108.                 ctlpt(E2, -0.656000, 0.316000),
  109.                 ctlpt(E2, -0.640000, 0.140000),
  110.                 ctlpt(E2, -0.612000, -0.052000),
  111.                 ctlpt(E2, -0.564000, -0.460000),
  112.                 ctlpt(E2, -0.564000, -0.460000),
  113.                 ctlpt(E2, -0.072000, 0.432000),
  114.                 ctlpt(E2, 0.276000, 0.428000),
  115.                 ctlpt(E2, 0.540000, -0.152000),
  116.                 ctlpt(E2, 0.660000, -0.408000),
  117.                 ctlpt(E2, 0.896000, -0.180000),
  118.                 ctlpt(E2, 1.132000, -0.132000),
  119.                 ctlpt(E2, 1.244000, -0.188000),
  120.                 ctlpt(E2, 1.564000, -0.200000),
  121.                 ctlpt(E2, 1.764000, -0.140000),
  122.                 ctlpt(E2, 1.804000, -0.008000) ));
  123.  
  124.     Srf1 = SWPSCLSRF( body_Cross * rotz(90), body_Axis, body_scaleCrv, off, 0 );
  125.     cross2 = scale(vector (0.5,1.0,1.0))*circle(vector(0.0,0.0,0.0),0.4); 
  126.  
  127.       beten = SWPSCLSRF( cross2, body_Axis, body_scaleCrv, off, 0 );
  128.     free(cross2);
  129.  
  130.     color(srf1,blue);
  131.     color(beten,yellow);
  132.     free(body_Axis);
  133.     free(body_scaleCrv);
  134.     free(body_Cross);
  135.      body = list(srf1,beten);
  136.     free(srf1);
  137.     free(beten);
  138.     
  139.  base_nail =scale( vector(1,1,0.2))* cone ( vector(0,0,0), vector(1,0,0), 0.5);
  140.  color( base_nail, white );
  141.  
  142.  base_phalanx = scale(vector( 1,1,0.8))*sphere( vector(0,0,0), 0.7);
  143.  color ( base_phalanx, blue);
  144.  
  145.  base_finger = list (  base_phalanx, base_nail * trans(vector(0.3,0,0)));
  146.  
  147.  left_finger = base_finger * rotz(-30) * trans(vector(0,-0.2,0));
  148.  middle_finger = base_finger;
  149.  right_finger = base_finger * rotz(30)*trans(vector(0,0.2,0));
  150.  
  151.  pie = left_finger + middle_finger + right_finger;
  152.  
  153.  free(base_finger);
  154.  free(left_finger);
  155.  free(middle_finger);
  156.  free(right_finger);
  157.  
  158.  
  159.     
  160.     
  161.     front_leg_cross = scale(vector (0.8,1,1.0))*circle(vector(0.0,0.0,0.0),0.2); 
  162.  
  163.     front_leg_scale = cbspline(3,
  164.          list (
  165.                 ctlpt(E2, 0, 0 ),
  166.         ctlpt(E2, 0, 0.5),
  167.         ctlpt(E2, 0.228, 1),
  168.         ctlpt(E2, 0.492, 1.8 ),
  169.  
  170.                 ctlpt(E2, 0.952, 2.3),
  171.                 ctlpt(E2, 1, 2.5 ),
  172.                 ctlpt(E2, 1.2, 1),
  173.         ctlpt(E2, 1.4, 3)),
  174.  
  175.         list(KV_OPEN));
  176.  
  177.     front_leg_axis = cbspline( 4,
  178.         list(    ctlpt( E2,-0.14, 1), 
  179.              ctlpt( E2,-0.14, 1), 
  180.              ctlpt( E2,-0.14, 1), 
  181.                
  182.              ctlpt( E2,-0.14, 1), 
  183.              ctlpt( E2,-0.13, -0.21), 
  184.              ctlpt( E2,-0.1, -0.34), 
  185.              ctlpt( E2, 0.3,  -0.41)),
  186.                          list( KV_OPEN ) );
  187.  
  188.  
  189.     front_leg = SWPSCLSRF(front_leg_cross,front_leg_Axis,front_leg_scale, off, 0 ); 
  190.     color (front_leg,blue);
  191.     free(front_leg_cross);
  192.     free(front_leg_axis);
  193.     free(front_leg_scale);
  194.  
  195.     whole_front_leg =list(front_leg,pie*scale(vector(0.45,0.45,0.45))
  196.                 *rotx(90)*roty(180)*trans(vector(-0.14,1,0)));
  197.      
  198.     free(front_leg);
  199.     
  200.     
  201.  base_finger2 = list (  base_phalanx, base_nail *scale(vector(5/7,5/7,5/7))* trans(vector(0.3,0,0)));
  202.  
  203.  left_finger2 = base_finger2 * rotz(-30) * trans(vector(0,-0.3,0));
  204.  middle_finger2 = base_finger2;
  205.  right_finger2 = base_finger2 * rotz(30)*trans(vector(0,0.3,0));
  206.  
  207.  pie2 = left_finger2 + middle_finger2 + right_finger2;
  208.  free(base_nail);
  209.  free(base_phalanx);
  210.  free(base_finger2);
  211.  free(left_finger2);
  212.  free(middle_finger2);
  213.  free(right_finger2);
  214.  
  215.     back_leg_cross = scale(vector (0.7,1,1.0))*circle(vector(0.0,0.0,0.0),0.2); 
  216.  
  217.     back_leg_scale = cbspline(3,
  218.          list (
  219.                 ctlpt(E2, 0, 0 ),
  220.         ctlpt(E2, 0, 4),
  221.         ctlpt(E2, 0.228, 4.5),
  222.         ctlpt(E2, 0.492, 2.3 ),
  223.  
  224.                 ctlpt(E2, 0.952, 2.8),
  225.                 ctlpt(E2, 1, 3.3 ),
  226.                 ctlpt(E2, 1.2, 1.5),
  227.         ctlpt(E2, 1.4, 3.5)),
  228.  
  229.         list(KV_OPEN));
  230.  
  231.     back_leg_axis = cbspline( 4,
  232.         list(    ctlpt( E2,-0.14, 1), 
  233.              ctlpt( E2,-0.14, 1), 
  234.              ctlpt( E2,-0.14, 1), 
  235.                
  236.              ctlpt( E2,-0.14, 1), 
  237.              ctlpt( E2,-0.13, -0.21), 
  238.              ctlpt( E2,-0.1, -0.34), 
  239.              ctlpt( E2, 0.3,  -0.41)),
  240.                          list( KV_OPEN ) );
  241.  
  242.     back_leg = SWPSCLSRF( back_leg_cross,back_leg_Axis,back_leg_scale, off, 0 ):
  243.     color(back_leg, blue);
  244.     free(back_leg_cross);
  245.     free(back_leg_axis);
  246.     free(back_leg_scale);
  247.  
  248.     whole_back_leg = list (back_leg, pie2*scale(vector(0.7,0.7,0.4))*rotx(90)*roty(180)*trans(vector(-0.14,1,0)));
  249.  
  250.     free(back_leg);
  251.     free(pie);
  252.  
  253.  
  254.  
  255.  
  256.  
  257.     dino = list(body*rotx(90)*rotz(-90)*trans(vector(0.0,-0.6,-0.7))
  258.             *scale(vector(0.8,1.0,1.0))
  259.             ,head*scale(vector(0.2,0.2,0.2))
  260.             ,whole_front_leg*scale(vector(0.25,0.25,0.25))*rotx(-90)*trans(vector(-0.27,-0.2,-0.8))                    ,whole_front_leg*scale(vector(0.25,0.25,0.25))*rotx(-90)*rotz(180)*trans(vector(0.27,-0.2,-0.8))
  261.             ,whole_back_leg*scale(vector(0.35,0.35,0.35))*rotx(-90)*trans(vector(-0.2,-0.7,-0.7))
  262.             ,whole_back_leg*scale(vector(0.35,0.35,0.35))*rotx(-90)*rotz(180)*trans(vector(0.2,-0.7,-0.7))
  263. );
  264.  
  265.     free(body);
  266.     free(head);
  267.     free(whole_front_leg);
  268.     free(whole_back_leg);
  269.  
  270.     interact(dino);
  271.  
  272.  
  273.  
  274.  
  275.  
  276.  
  277.  
  278.  
  279.  
  280.  
  281.  
  282.  
  283.  
  284.  
  285.  
  286.  
  287.